package com.tp.test;

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;

/**
 * @author taopeng
 * @version 1.0
 * @Description
 * @date 2021/11/15 17:52:37
 */
@SuppressWarnings("all")
public class GeneratorUtil {
    @Test
    public void testMbg(){

        // 1.全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setActiveRecord(false)
                .setAuthor("乔亚涛") // 指定作者
                .setOutputDir("/Users/taopeng/workspace/Test/src/main/java/src/main/java")
                .setFileOverride(true) // 指定文件覆盖
                .setIdType(IdType.AUTO) // 设置主键自增策略
                .setServiceImplName("%sService") // 设置生成的services接口的名字的首字母是否为I
                .setBaseResultMap(true) // 基本的字段映射
                .setBaseColumnList(true); // 基本的sql片段
        // 2.配置数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL) // 设置数据库类型
                .setDriverName("com.mysql.cj.jdbc.Driver")
                .setUrl("jdbc:mysql://localhost:3306/test2020?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true")
                .setUsername("root")
                .setPassword("");
        // 3.策略配置
        //表
        String[] tables = {"user_info_1"};
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(true) //全局大写命名
                .setDbColumnUnderline(true) // 指定表名和字段名是否使用了下划线
                .setNaming(NamingStrategy.underline_to_camel) // 数据库字段下划线转驼峰命令策略
                //.setTablePrefix("b2c_trip_") // 设置表前缀
                .setInclude(tables); // 设置需要生成的表
        // 4.包名策略配置

        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.tp.test") // 设置父包
                .setMapper("mapper")
                .setService("service")
                .setController("controller")
                .setEntity("model")
                .setXml("mapper");
        // 5. 开始生成代码
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setGlobalConfig(globalConfig)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig);
        autoGenerator.execute();
    }

}
